#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>

static int64_t count = 0;
static volatile int loop = 1 ;// 如果不加volatile被O1优化时，编译器会认为loop的值是一成不变的，告诉编译器去存储空间取值
static void alarmhandle (int s)
{
    loop = 0 ;
}

int main ()
{
    signal(SIGALRM , alarmhandle);// 先注册
    alarm(5);


    while (loop)// O1优化后，直接从内存当中取loop的值而不是去loop的存储空间取loop
        count++;
    printf("%ld\n" , count);

    exit(0);
}